'use strict';
var vk; // 全局vk实例
// 涉及的表名
const dbName = {
	//test: "vk-test", // 测试表
};

var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
/**
 * 权限注意：访问以下链接查看
 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#内置权限
 */
var cloudObject = {
	isCloudObject: true, // 标记为云对象模式
	/**
	 * 请求前处理，主要用于调用方法之前进行预处理，一般用于拦截器、统一的身份验证、参数校验、定义全局对象等。
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#before-预处理
	 */
	_before: async function() {
		vk = this.vk; // 将vk定义为全局对象
		// let { customUtil, uniID, config, pubFun } = this.getUtil(); // 获取工具包
	},
	/**
	 * 请求后处理，主要用于处理本次调用方法的返回结果或者抛出的错误
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#after-后处理
	 */
	_after: async function(options) {
		let {
			err,
			res
		} = options;
		if (err) {
			return; // 如果方法抛出错误，直接return;不处理
		}
		return res;
	},
	/**
	 * 获取列表
	 * @url admin/pages/kh/tjsj/jgmysj/jgmysj.getList 前端调用的url参数地址
	 */
	getList: async function(data) {
		let res = {
			code: 0,
			msg: ''
		};

		let userInfo = await this.getUserInfo(); // 获取当前登录的用户信息
		// 业务逻辑开始-----------------------------------------------------------
		// 业务逻辑开始-----------------------------------------------------------
		let dbName = "a_datas"; // 表名

		if (userInfo.role.includes("admin")) {
			res = await vk.baseDao.getTableData({
				dbName,
				data,
				whereJson: {
					type: 9
				},
			});
			return res;
		}

		if (userInfo.role.includes("middleman")) {
			res = await vk.baseDao.getTableData({
				dbName,
				data,
				whereJson: {
					type: 9,
					middleman_id: userInfo._id
				},
			});
			return res;
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url admin/pages/kh/tjsj/jgmysj/jgmysj.test 前端调用的url参数地址
	 * 计算机构上个月的数据
	 */
	// test: async function(data) {
	// 	let res = {
	// 		code: 0,
	// 		msg: ''
	// 	};

	// 	var startTime = Date.now();
	// 	var jigouzongjinelist = [];
	// 	var jigouzongjinelist1 = [];
	// 	var jigoulist = [];
	// 	var pay_rs_num = [];
	// 	var pay_bs_num = [];
	// 	var commission_rate_list = [];
	// 	var commission_rate_list1 = [];
	// 	let {
	// 		lastMonthStart,
	// 		lastMonthEnd,
	// 	} = vk.pubfn.getCommonTime(new Date());

	// 	var lastMonth = vk.pubfn.timeFormat(lastMonthStart, "yyyy-MM");
	// 	// 业务逻辑开始-----------------------------------------------------------
	// 	//查询数据库的a_datas表中是否已存在上个月的机构佣金数据
	// 	let lastMonth_data = await db.collection('a_datas').where({
	// 		month: lastMonth,
	// 		type: 9, //机构上个月数据
	// 	}).count();
	// 	console.log("lastMonth_data", lastMonth_data.total);
	// 	//如果存在直接终止函数的执行
	// 	if (lastMonth_data.total > 0) {
	// 		return res;
	// 	};

	// 	//获取机构的的用户数据
	// 	var results = await db.collection('uni-id-users').where({
	// 		role: _.in(["middleman"])
	// 	}).field({
	// 		'password': false
	// 	}).get();
	// 	jigoulist = results.data;
	// 	console.log("获取机构的的用户数据=>", jigoulist);

	// 	//获取上个月机构的引流金额
	// 	for (var i = 0; i <= jigoulist.length - 1; i++) {
	// 		jigouzongjinelist[i] = await db.collection('a_recharge').aggregate().match({
	// 			_add_time: _.and(_.gte(lastMonthStart), _.lte(lastMonthEnd)),
	// 			middleman_id: jigoulist[i]._id,
	// 		}).group({
	// 			_id: null,
	// 			totalPrice: $.sum('$shifu_amount')
	// 		}).end();

	// 		//获取付费人数
	// 		let jrczrs = await db.collection('a_recharge')
	// 			.aggregate()
	// 			.match({
	// 				pay_status: 1,
	// 				_add_time: _.and(_.gt(lastMonthStart), _.lt(lastMonthEnd)),
	// 				middleman_id: jigoulist[i]._id,
	// 			})
	// 			.group({
	// 				_id: null,
	// 				user_count: $.addToSet('$user_id')
	// 			})
	// 			.end()
	// 		pay_rs_num[i] = jrczrs.data.length ? jrczrs.data[0].user_count.length : 0

	// 		//获取付费订单笔数
	// 		pay_bs_num[i] = await vk.baseDao.count({
	// 			dbName: "a_recharge",
	// 			whereJson: {
	// 				pay_status: 1,
	// 				_add_time: _.and(_.gt(lastMonthStart), _.lt(lastMonthEnd)),
	// 				middleman_id: jigoulist[i]._id,
	// 			}
	// 		});

	// 		commission_rate_list[i] = jigoulist[i].commission_rate;
	// 		//获取上个月机构的引流金额换算后的数据
	// 		jigouzongjinelist1[i] = jigouzongjinelist[i].data.length == 0 ? 0 :
	// 			jigouzongjinelist[i].data[0].totalPrice;
	// 		//获取佣金比例
	// 		commission_rate_list1[i] = commission_rate_list[i] == 0 ? 0 : commission_rate_list[i];
	// 		//添加数据到数据库中
	// 		let add_datas = await db.collection('a_datas').add({
	// 			month: lastMonth,
	// 			middleman_username: jigoulist[i].username,
	// 			middleman_nickname: jigoulist[i].nickname,
	// 			middleman_id: jigoulist[i]._id,
	// 			pay_rs_num: pay_rs_num[i],
	// 			pay_bs_num: pay_bs_num[i],
	// 			pay_je_num: jigouzongjinelist1[i],
	// 			yj_bl: commission_rate_list1[i],
	// 			kn_yj: jigouzongjinelist1[i] * commission_rate_list1[i],
	// 			type: 9, //0是平台总数据，1是账号级数据，2是链接级数据,8代理商每月数据,9机构每月数据
	// 			_add_time: new Date().getTime(),
	// 			_add_time_str: vk.pubfn.timeFormat(new Date(), "yyyy-MM-dd hh:mm:ss"),
	// 		});
	// 		console.log("添加机构上个月的佣金情况数据==》", add_datas);

	// 	};
	// 	console.log("添加数据到数据库中");
	// 	// 业务逻辑结束-----------------------------------------------------------
	// 	return res;
	// },
};

module.exports = cloudObject;
